package tests;

import java.util.List;
import entites.Domaine;
import entites.GroupeParcours;
import entites.Mention;
import entites.Parcours;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import business.mention.IMentionManager;

import service.IService;


public class TestMentionManager {
	//	 static Dao dao;
	// couche service

	private static IMentionManager mentionManager;
	private static IService service;


	@BeforeClass
	public static void beforeAll() throws Throwable {
		// log
		//log("init");
		// configuration de l'application
		ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");
		// couche service
		service = (IService) ctx.getBean("service");}

	@AfterClass
	public static void afterAll() {

	}

	@Before
	public void setUp()  {
		// pour plus tard
	}

	@After
	public void tearDown() {
		// pour plus tard


	}

	//@Test
	public void testFindMention(){
		Mention mention = service.selectMentionByAcronyme("ISL");
		System.out.println("J'ai trouve cette mention dans la base de donnees :"+mention.getLibelle());

	}

	//@Test 
	public void testUpdatMention(){
		Domaine domaine=service.selectDomaineById(3);
		Mention mention = new Mention();
		mention.setAcronyme("MINF");
		mention.setLibelle("coucou");
		mention.setType("mention nlle");
		service.addMentionToDomaine(mention, domaine);
		Mention mention2=service.selectMentionByAcronyme(mention.getAcronyme());

		mention2.setLibelle("nouveau libelle");
		service.updateMention(mention2);
		System.out.println("la nouvelle mention s'appelle :"+mention2.getLibelle());
	}


	@Test
	public void testDeleteMention(){

		Mention mention = mentionManager.selectMentionByAcronyme("ISL");
		mentionManager.deleteMention(mention.getAcronyme());
	}


	//@Test
	public void testFindAllMentionLike(){
		List<Mention> mentions = service.selectMentionByLibelle("%ment%");
		System.out.println(" =======le nombre de mention trouver :"+mentions.size());
		for(Mention mention :mentions ){
			System.out.println("\n"+mention.getLibelle());
		}
	}		   

	//@Test
	public void testAddParcoursToMention(){

		Mention mention=service.selectMentionByAcronyme("ISL");
		Parcours parcours = new Parcours();
		parcours.setAcronyme("I2A");
		parcours.setLibelle("bon parcours pour reussir");
		parcours.setAcronyme("ISLI2A");
		service.addParcoursToMention(parcours, mention);

	}

	//@Test
	public void testAddGroupeParcoursToMention(){

		Mention mention=service.selectMentionByAcronyme("ISL");
		GroupeParcours gparcours = new GroupeParcours();
		gparcours.setAcronyme("groupeI2A");
		gparcours.setLibelle("lee groupe de bons parcours");
		gparcours.setAcronyme("GRP_ISLI2A");
		service.addGroupeParcoursToMention(gparcours, mention);
	}

	//@Test
	public void testFindAllMention(){
		List<Mention> mentions=service.selectMentions();
		System.out.println("le nombre de mention trouves dans la base de donnees "+mentions.size());
		for(Mention mention:mentions){
			System.out.println(mention.getLibelle()+" "+mention.getAcronyme());
		}
	}

	//@Test
	public void testFindallParcoursOfMention(){
		Mention mention=service.selectMentionByAcronyme("ISL");
		List<Parcours> listparcours=service.selectParcoursByMention(mention);
		System.out.println("=====NOMBRE DE PARCOURS TROUVES DANS LA MENTION 1"+listparcours.size());
		for(Parcours parcours:listparcours){
			System.out.println(parcours.getLibelle()+"   "+parcours.getAcronyme());
		}

	} 
}
